
package com.lemon.utils.appPush;

import java.io.IOException;
import java.util.Map;

import com.gexin.rp.sdk.base.IAliasResult;
import com.gexin.rp.sdk.base.IPushResult;
import com.gexin.rp.sdk.base.impl.SingleMessage;
import com.gexin.rp.sdk.base.impl.Target;
import com.gexin.rp.sdk.http.IGtPush;
import com.gexin.rp.sdk.template.NotificationTemplate;
import com.gexin.rp.sdk.template.style.Style0;


/**
 * <p>Title: AppPush</p>
 * <p>Description: 
 * </p>
 * <p>Company: </p>
 * @author Ran_cc
 * @date 2018年11月21日
 * @版本 V 1.0 
 */
public class AppPush {
	//定义常量, appId、appKey、masterSecret 采用本文档 "第二步 获取访问凭证 "中获得的应用配置
	private static String appId = "BZktouBiGf586f8nT05Dm9";
	private static String appKey = "vLTVUTZoPJ6weoT0i4I858";
	private static String masterSecret = "OWLmw76TZEADCKUA0gNxr4";
	private static String url = "http://sdk.open.api.igexin.com/apiex.htm";
	private static String Alias = "cityRunAlias";

	public static void main(String[] args) throws IOException {

		//bindAlias("3e170b169630706f82baf94c8a2b8923");

		IGtPush push = new IGtPush(url, appKey, masterSecret);
		IAliasResult queryClient = push.queryClientId(appId , Alias);
		System.out.println("根据别名获取的CID：" + queryClient.getClientIdList());

	}

	public static void pushMessage() {

	}

	public static boolean bindAlias(String cid) {
		IGtPush push = new IGtPush(url, appKey, masterSecret);
		IAliasResult bindSCid = push.bindAlias(appId , Alias , cid);
		System.out.println("绑定结果：" + bindSCid.getResult() + "错误码:" + bindSCid.getErrorMsg());
		return bindSCid.getResult();
	}

	// 对单个用户推送消息
	/*
	 * 1. cid
	 * 2. 要传到客户端的 msg
	 * 2.1 标题栏：key = title,
	 * 2.2 通知栏内容： key = titleText,
	 * 2.3 穿透内容：key = transText
	 */
	public IPushResult pushMsgToSingle(String cid , Map<String , String> msg) {
		// 代表在个推注册的一个 app，调用该类实例的方法来执行对个推的请求
		IGtPush push = new IGtPush(appKey, masterSecret);
		// 创建信息模板
		NotificationTemplate template = getNotifacationTemplate(appId , appKey , msg);
		//定义消息推送方式为，单推
		SingleMessage message = new SingleMessage();
		// 设置推送消息的内容
		message.setData(template);
		// 设置推送目标
		Target target = new Target();
		target.setAppId(appId);
		// 设置cid
		target.setClientId(cid);
		// 获得推送结果
		IPushResult result = push.pushMessageToSingle(message , target);
		/*
		 * 1. 失败：{result=sign_error}
		 * 2. 成功：{result=ok, taskId=OSS-0212_1b7578259b74972b2bba556bb12a9f9a, status=successed_online}
		 * 3. 异常
		 */
		return result;
	}

	// 设置通知消息模板
	/*
	 * 1. appId
	 * 2. appKey
	 * 3. 要传送到客户端的 msg
	 * 3.1 标题栏：key = title,
	 * 3.2 通知栏内容： key = titleText,
	 * 3.3 穿透内容：key = transText
	 */
	private static NotificationTemplate getNotifacationTemplate(String appId , String appKey ,
			Map<String , String> msg) {
		// 在通知栏显示一条含图标、标题等的通知，用户点击后激活您的应用
		NotificationTemplate template = new NotificationTemplate();
		// 设置appid，appkey
		template.setAppId(appId);
		template.setAppkey(appKey);
		// 穿透消息设置为，1 强制启动应用
		template.setTransmissionType(1);
		// 设置穿透内容
		System.out.println(msg.get("title") + "::" + msg.get("titleText") + "::" + msg.get("transText"));
		template.setTransmissionContent(msg.get("transText"));
		// 设置style
		Style0 style = new Style0();
		// 设置通知栏标题和内容
		style.setTitle(msg.get("title"));
		style.setText(msg.get("titleText"));
		// 设置通知，响铃、震动、可清除
		style.setRing(true);
		style.setVibrate(true);
		style.setClearable(true);
		// 设置
		template.setStyle(style);

		return template;
	}


}
